package com.lib.krismile.util;

import java.math.BigDecimal;

/**
 * @Author: matao
 * @Date: 2020-12-01 11:11
 */
public class
DoubleOperationUtil {


    /**
     * 将单位为元转换为单位为分.
     *
     * @param yuan 将要转换的元的数值字符串
     * @return the integer
     */
    public static int yuanToFen(BigDecimal yuan) {
        if (yuan == null) {
            return 0;
        }
        return yuan.multiply(BigDecimal.valueOf(100)).intValue();
    }

    public static int yuanToFen(String yuan) {
        return (new BigDecimal(yuan)).setScale(2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).intValue();
    }

    public static BigDecimal fenToYuan(Integer fen) {
        if (fen == null) {
            return BigDecimal.valueOf(0);
        }
        return BigDecimal.valueOf(fen).divide(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
    }


    /**
     * 加法运算
     *
     * @param m1
     * @param m2
     * @return
     */
    public static double add(double m1, double m2) {
        BigDecimal p1 = BigDecimal.valueOf(m1);
        BigDecimal p2 = BigDecimal.valueOf(m2);
        return p1.add(p2).doubleValue();
    }

    /**
     * 减法运算
     *
     * @param m1
     * @param m2
     * @return
     */
    public static double subtract(double m1, double m2) {
        BigDecimal p1 = BigDecimal.valueOf(m1);
        BigDecimal p2 = BigDecimal.valueOf(m2);
        return p1.subtract(p2).doubleValue();
    }

    /**
     * 乘法运算
     *
     * @param m1
     * @param m2
     * @return
     */
    public static double multiply(double m1, double m2) {
        BigDecimal p1 = BigDecimal.valueOf(m1);
        BigDecimal p2 = BigDecimal.valueOf(m2);
        return p1.multiply(p2).doubleValue();
    }


    /**
     * 除法运算
     *
     * @param m1
     * @param m2
     * @param scale
     * @return
     */
    public static double divide(double m1, double m2, int scale) {
        if (scale < 0) {
            throw new IllegalArgumentException("Parameter error");
        }
        BigDecimal p1 = BigDecimal.valueOf(m1);
        BigDecimal p2 = BigDecimal.valueOf(m2);
        return p1.divide(p2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
}
